%{
#include "y.tab.h"
#include <stdio.h>
%}
digito [0-9]
alpha [a-zA-Z]
alpha_num {alpha}|{digito}|"_"
id	{alpha}({alpha_num})*
int {digito}+
float {digito}+(\.{digito}+?)
string "\""[\0-\41,\43-\255]*"\""
com "/*"(.|\n)*"*/"
com2 "//".*



%option yylineno
%option noyywrap
%%
"class" {return (CLASS);}
"boolean" {return (BOOL);}
"if" {return (IF);}
"else" {return (ELSE);}
"break" {return (BREAK);}
"continue" {return (CONTINUE);}
"float" {return (FLOAT);}
"for" {return (FOR);}
"int" {return (INT);}
"return" {return (RETURN);}
"void" {return (VOID);}
"while" {return (WHILE);}
"externinvk" {return (EXTERNINVK);}
"true" {return(TRUE);}
"false" {return(FALSE);}
{id} {return(ID);}
{float} {return (FLOAT_LITERAL);}
{int} {return (INT_LITERAL);}
{string} {printf(yytext);return (STRING_LITERAL);}
"+" {return ('+');}
"-" {return ('-');}
"*" {return ('*');}
"/" {return ('/');}
"%" {return ('%');}
"<" {return ('<');}
">" {return ('>');}
"<=" {return (MENORIGUAL);}
">=" {return (MAYORIGUAL);}
"==" {return (IGUALDAD);}
"!=" {return (DISTINTO);}
"&&" {return (YLOGICO);}
"||" {return (OLOGICO);}
"," {return (',');}
"{" {return ('{');}
"}" {return ('}');}
"[" {return ('[');}
"]" {return (']');}
"(" {return ('(');}
";" {return (';');}
"=" {return ('=');}
")" {return (')');}
"\"" {return ('\"');}
"\'" {return ('\'');}
"+=" {return (INCREMENTO);}
"-=" {return (DECREMENTO);}
"!" {return ('!');}
{com}  {}
{com2} {}
"\n" 	{}
"\t" 	{}
" "     {}

%%
int yyerror (char * msg)
{ printf ("::: ERROR: %s - en linea : %d\n", msg, yylineno);
 return 0;
}


